/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.diplomka.datalayer.dao;

import cz.muni.fi.diplomka.datalayer.entity.BuildingInProgressEntity;
import cz.fi.muni.diplomka.common.Coordinates;
import java.util.List;

/**
 * Interface for manipulation with Building In Progress Entity
 *
 * @author Jakub Kutil
 */
public interface BuildingInProgressDao {

    /**
     * Adds Building in Progress to DB
     *
     * @param buildingInCityEntity Building in Progress to add
     */
    public void addBuildingInProgress(BuildingInProgressEntity buildingInCityEntity);

    /**
     * Edits Building in Progress in DB
     *
     * @param buildingInCityEntity Building in Progress to edit
     */
    public void editBuildingInProgress(BuildingInProgressEntity buildingInCityEntity);

    /**
     * Deletes Building in Progress from DB
     *
     * @param cityId ID of specified city
     * @param coordinates coordinates of Building in Progress
     */
    public void deleteBuildingInProgress(Long cityId, Coordinates coordinates);

    /**
     * Gets Building in Progress in specified City at specified location
     *
     * @param cityId ID of specified city
     * @param coordinates coordinates of Building in Progress
     *
     * @return found Building in Progress or empty one if not found
     */
    public BuildingInProgressEntity getBuildingInProgressAtPosition(Long cityId, Coordinates coordinates);

    /**
     * Gets all Buildings in Progress in City
     *
     * @param cityId ID of specified City
     *
     * @return List of Buildings in Progress in specified City
     */
    public List<BuildingInProgressEntity> getAllBuildingsInProgressForCity(Long cityId);

    /**
     * Gets all Buildings in Progress
     *
     *
     * @return List of Buildings in Progress
     */
    public List<BuildingInProgressEntity> getAllBuildingsInProgress();
}
